assume cs:code

code segment
start:			mov al, 159
				call showHex

				mov ax, 4c00h
				int 21h


;展示一个字节数据的16进制字符串
;参数使用al传递
showHex:		jmp short showHexReal
table			db '0123456789ABCDEF' ;字符表
showHexReal:	push es
				push ax
				push bx
				
				;获取高4位
				mov ah, al
				shr ah, 1
				shr ah, 1
				shr ah, 1
				shr ah, 1
				mov bl, ah
				mov bh, 0
				mov ah, cs:table[bx]

				;输出高4位
				mov bx, 0b800h ;因为ah和al中的值暂时都有用处，所以不能用ax
				mov es, bx
				mov es:[160 * 12 + 32 * 2], ah
				mov byte ptr es:[160 * 12 + 32 * 2 + 1], 42h

				;获取低四位
				and al, 00001111b
				mov bl, al
				mov bh, 0
				mov al, cs:table[bx]

				;输出低四位
				mov es:[160 * 12 + 33 * 2], al
				mov byte ptr es:[160 * 12 + 33 * 2 + 1], 42h


				pop bx
				pop ax
				pop es
				ret

code ends

end start